//
//  YYJ_PublicClass.h
//  miaoxiaqianbao
//
//  Created by Lonely丶晏袁杰 on 2018/10/9.
//  Copyright © 2018年 Lonely`yyj. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
NS_ASSUME_NONNULL_BEGIN


@interface YYJ_PublicClass : NSObject
#pragma mark 计算文字
/** 计算文字 */
+(CGSize)user_getSize:(UIFont *)font With:(CGFloat)with Hight:(CGFloat)hight String:(NSString *)str;
#pragma mark - 获取当前屏幕显示的viewcontroller
/** 获取当前屏幕显示的viewcontroller */
+(UIViewController *)getCurrentVC;
#pragma mark - 浮现一个弹窗
/** 浮现一个弹窗 */
+(void)showMessage:(NSString *)title;
+(void)showMessage:(NSString *)title inVC:(UIViewController *)kVC;
#pragma mark - MD5加密
/** MD5加密 */
+(NSString *) md5: (NSString *) inPutText;
#pragma mark -  /** 设置按钮  图片在上 文字在下 水平居中  */
/** 设置按钮  图片在上 文字在下 水平居中  */
+(void)buttonTopImageBottomTitle:(UIButton*)btn;
#pragma mark - 过滤数据
/**
 * kBaseModel 传入要检测的model
 * containsArray 传入要检测的数组
 * key 传入要检测的数据 key
 */
+(BOOL)containsObject:(YYJ_BaseModel *)kBaseModel
             andArray:(NSMutableArray *)containsArray
            searchKey:(NSString *)key;
#pragma mark - 获得当前 window
/** 获得当前 window */
+ (UIWindow *)mainWindow;
#pragma mark - 数据转 Json 字符串
/** 数据转 Json 字符串 */
+(NSString *)dataTurnJsonSrting:(id)obj;
#pragma mark - Json 转字典
/** Json 转字典 */
+(id)dictionaryWithJsonString:(NSString *)jsonString;
#pragma mark -  base64转码
/** base64转码 */
+ (NSString *)encode:(NSString *)string;
#pragma mark - base64解码
/** base64解码 */
+ (NSString *)dencode:(NSString *)base64String;
#pragma mark - 得到一个单击手势
/** 得到一个单击手势 */
+(UITapGestureRecognizer* )getTabGestureRecognizer:(id)target action:(SEL)action;
#pragma mark - 时间格式
/** 时间格式 */
+(NSString *)dateTimeConvert:(NSString *)timestamp andFormat:(NSString *)format;
#pragma mark - 判断手机型号
/**
 * 判断手机型号
 */
+(NSString*)iphoneType;
#pragma mark 弹出举报或者反馈类似的视图
/**
 * 弹出举报或者反馈类似的视图
 */
+(void)showViewController:(UIViewController *)vc
                     type:(NSInteger)type
                     data:(NSDictionary *)dic;
/** url 中文特殊字符转码 */
+(NSString *)endodedUrl:(NSString *)urlSring;
#pragma mark - 数字转中文
+(NSString *)numberToChinese:(NSInteger )number;
+(AppDelegate *)getCurrentAppDelegate;
/**
 Block方式的定时器
 
 @param task 任务（这里使用block）
 @param start 开始时间
 @param interval 间隔
 @param repeats 时候否重复调用
 @param async 是否子线程
 @return 定时器标识（最终取消定时器是需要根据此标识取消的）
 */
+ (NSString*)timerTask:(void(^)(void))task
                 start:(NSTimeInterval) start
              interval:(NSTimeInterval) interval
               repeats:(BOOL) repeats
                  async:(BOOL)async;

/**
 Target方式的定时器
 
 @param target 目标对象（这里使用方法）
 @param selector 调用方法
 @param start 开始时间
 @param interval 间隔
 @param repeats 是否重复调用
 @param async 是否子线程
 @return 定时其标识（最终取消定时器是需要根据此标识取消的）
 */
+ (NSString*)timerTask:(id)target
              selector:(SEL)selector
                 start:(NSTimeInterval)start
              interval:(NSTimeInterval)interval
               repeats:(BOOL)repeats
                 async:(BOOL)async;

/**
 取消定时器
 
 @param timerName 定时器标识
 */
+(void)canelTimer:(NSString*) timerName;

#pragma mark - 获取音频时长
/** 获取音频时长 */
+ (NSTimeInterval)AudioDurationFromUrl:(NSString *)url;


#pragma mark - 弹出自定义文字显示弹窗
/// 弹出自定义文字显示弹窗
/// @param msg 文字内容
/// @param vc 依赖界面
+(void)showPopUpsVC:(NSString *)msg toVC:(UIViewController *)vc;
#pragma mark - 弹出分享页面
/// 弹出分享页面
/// @param state 需要什么类型
/// @param vc 依赖界面
/// @param choice 选择了什么
+(void)show_sharePage_vc:(SharePage_Class)state
                    toVC:(UIViewController *)vc
                  choice:(void(^)(SharePage_Class state))choice;

/// 获取协议网址
/// @param type 类型
/// @param url_back 回传网址
+(void)getprotocolObj:(NSString *)type
                toUrl:(nonnull void (^)(NSString *url))url_back;



/// 计算字符串长度  并且返回
/// @param string 字符串
/// @param number 限制的长度
+ (NSString *)getStringLengthWithString:(NSString *)string andIntString:(int)number;

/// 获取全屏照片 格式为 XXX_(宽x高)
+(UIImage *)getFullCcreenImage:(NSString *)name;
/// 获取全屏照片名字 格式为 XXX_(宽x高)
+(NSString *)getFullCcreenImageName:(NSString *)name;
@end

NS_ASSUME_NONNULL_END
